RAKE

您所在的位置:网站首页 keyword extraction RAKE

RAKE

2023-11-16 04:36| 来源: 网络整理| 查看: 265

没想到吧,在深度学习大行其道的当今,我突然写了一篇上古时代的文章(其实也就2010年,奈何知识更新真快…) 话不多说,一起来看一下RAKE算法

RAKE

RAKE全称为Rapid Automatic Keyword Extraction,突出两个亮点:1. 快速,线上部署非常友好;2. 无监督,也即不需要大量有标签数据,0成本~

提取候选词

首先,使用停用词进行候选关键词的提取和切分,这里的停用词表非常关键,决定你候选词组切分的效果,候选词组切分不好,最终提取到的效果也会受影响。 候选词提取方法其实很简单:首先,构造停用词表,对一个句子中,两个停用词之间的短语进行切分(切分得到的,可能是短语,也可能是单词),从而得到多个候选词。 首先,构造停用词正则项:

stop_word_pattern = re.compile('|'.join(stop_word_regex_list), re.IGNORECASE)

其次,按停用词进行切分:

tmp = re.sub(stopword_pattern, '|', s.strip())

举个例子,原始句子如下:

text = "Compatibility of systems of linear constraints over the set of natural numbers. Criteria of compatibility of a system of linear Diophantine equations, strict inequations, and nonstrict inequations are considered. "

linear constraints前为停用词of, 后为停用词over,所以linear constraints会被切分成一个短语,上述句子切分后得到的候选关键词如下:

tmp_candidate_keywords = ["Compatibility", "systems", "linear constraints", "set", "natural numbers", "Criteria", "compatibility", "system", "linear Diophantine equations" "strict inequations", "nonstrict inequations", "considered".] 计算候选词得分

首先,分别计算(1)词频(freq(w)),即单词出现次数;(2)词组总长(deg(w)),即单词所在词组长度总和;(3)词组总长与词频的比例(deg(w)/freq(w))。 如上述例子tmp_candidate_keywords中,linear的词频freq(w)=2,词组总长deg(w)=2+3=5,因此该单词得分为deg(w)/freq(w)=5/2=2.5。 对每个单词都按上述方法计算得分后,可以得到每个单词的分数。 在这里插入图片描述 其次,计算短语得分:按每个单词的分数相加,得到短语得分。(由此可见,RAKE算法比较强调短语的结果,因为短语短语分数是由多个单词分词直接相加的,可以得到更高分数) 在这里插入图片描述 最后,按照得分进行排序,取前1/3的词组进行输出,作为最后的关键词结果。

实测效果

最后,来看一下效果。下图是在我们实际业务场景中提取到的关键词,总体效果还是很不错的: 在这里插入图片描述

参考: Paper: Automatic keyword extraction from individual documents Code: https://github.com/mpk001/RAKE-keywordsExtraction



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3